package fr.afcepf.ai89.lagrandebouffe.business;

import java.util.List;

import fr.afcepf.ai89.lagrandebouffe.entity.Plat;

/**
 * Définition des méthodes métier de l'application.
 * <code>
 * <strong>L'application sait : </strong>
 * <ul>
 * <li>
 * ajouter un {@link Plat}
 * </li>
 * </ul>
 * </code>
 * @author stagiaire
 *
 */
public interface IBusinessPlat {
/**
 * @param lePlat
 * @return
 * <code>
 * <ul><li><strong>la clé primaire</strong><br />
 * si le {@link Plat} est bien ajouté</li>
 * <li><strong>null</strong><br />
 * dans le cas où l'ajout ne marche pas.</li>
 * <li><strong>null</strong><br/>
 * dans le cas où un {@link Plat} existant possède le même libellé.</li>
 * </ul>
 * </code>
 */
Integer addPlat(Plat lePlat);
/**
 * Méthode permettant la suppression d'un {@link Plat} dans la BDD.
 * @param lePlat - le {@link Plat} à supprimer
 * @return
 * <code>
 * <ul>
 * <li><strong>true</strong><br/>
 * si le {@link Plat} est bien supprimé.</li>
 * <li><strong>false</strong><br/>
 * si le {@link Plat} ne l'a pas été.</li>
 * </ul>
 * </code>
 */
boolean deletePlat(Plat lePlat);
/**
 * Méthode permettant de rechercher un {@link Plat} par libelle.
 * @param libelle - libelle recherché dans le {@link Plat}
 * @return une liste de {@link Plat}.
 * <code>
 * <ul><li>une liste vide si aucun {@link Plat} ne correspond au libellé demandé.</li>
 * <li> une liste contenant tous les {@link Plat} dont le libellé contient le paramètre libellé du plat recherché.</li>
 * </ul>
 * </code>
 */
List<Plat> findPlat(String libelle);
}
